package com.zp.blog.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource dataSource(){
        return new DruidDataSource ();
    }


    //配置Druid的监控
    //1.配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean statViewServlet = new ServletRegistrationBean (new StatViewServlet (), "/druid/*");
        Map<String, String> initParams = new HashMap<> ();
        initParams.put ("loginUsername","admin");
        initParams.put ("loginPassword","123456");
        initParams.put ("allow","");//默认就是允许所有访问
        initParams.put ("deny","192.168.197.130");//拒绝访问包含这个ip地址的路径

        statViewServlet.setInitParameters (initParams);
        return statViewServlet;
    }

    //2.配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean ();
        bean.setFilter (new WebStatFilter ());
        Map<String, String> initParams = new HashMap<> ();
        initParams.put ("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters (initParams);
        bean.setUrlPatterns (Arrays.asList ("/*"));
        return bean;
    }
}
